.. :validated: 3.2.0

Настройка мониторинга целостности каталога
----------------------------------------------------------

Введение
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Инструкция описывает настройку контроллеров домена и подсистемы мониторинга для отображения данных из **LDAP**.

К инструкции прилагается файл скрипта. Скрипт располагается в папке "Скрипт мониторинга целостности каталога". (**Личный кабинет → Дистрибутивы → aldpro → Без сертификации/x86_64 → 3.0 → Документы → 3.2.0**)

Действия на контроллерах домена
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. Создать директорию ``/etc/zabbix/scripts/``:

.. code-block::

    mkdir /etc/zabbix/scripts/

1. Переместить скрипт ``getobjects.py`` в директорию ``/etc/zabbix/scripts/``

2. Сделать скрипт исполняемым:

.. code-block::

    chmod +x /etc/zabbix/scripts/getobjects.py

4. В файл ``/etc/zabbix/zabbix_agentd.conf.d/userparameters.conf`` добавить строку:

.. code-block::

    echo "UserParameter=getobjects,python3 /etc/zabbix/scripts/getobjects.py --ldap-server \"localhost\" --ldap-port 389 --bind-dn \"cn=Directory Manager\" --bind-password \"password\" --base-dn \"DC=test,DC=lan\" --dump" >> /etc/zabbix/zabbix_agentd.conf.d/userparameters.conf

где:

- ``--ldap-server`` – адрес сервера LDAP;
- ``--ldap-port`` – порт для подключения к каталогу;
- ``--bind-dn`` – учетная запись для подключения к каталогу с необходимыми правами на извлекаемые записи. В примере используется УЗ Directory Manager;
- ``--bind-password`` – пароль учетной записи;
- ``--base-dn`` – стартовая точка поиска в каталоге.

5. Проверить, что строки добавлены:

.. code-block::

    grep "getobjects" /etc/zabbix/zabbix_agentd.conf.d/userparameters.conf

6. Разрешить сервису ``zabbix`` выполнять скрипт:

.. code-block::

    sed -i -e 's/EnableRemoteCommands=1/AllowKey=system.run[*]/g' /etc/zabbix/zabbix_agentd.conf.d/zabbix_agent.conf

7. Перезапустить агент мониторинга:

.. code-block::

    systemctl restart zabbix-agent

8. Убедиться в работе скрипта:

.. code-block::

    zabbix_agentd -t getobjects

Пример вывода команды:

.. code-block::

    getobjects                                    [t|{
    "users": 1,
    "computers": 3,
    "services": 10,
    "usergroups": 6,
    "hostgroups": 2,
    "hbacrules": 2,
    "sudorules": 0,
    "dnszones": 2,
    "certificates": 0,
    "replication_conflicts": 0
    }]

Действия на подсистеме мониторинга
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Действия на web-портале Zabbix
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. note:: 

  Для перехода на web-портал ``zabbix`` необходимо перейти по адресу https://mon.test.lan/zabbix,

  где:

- mon - идентификатор сервера мониторинга;
- test.lan - имя домена;
- /zabbix - компонент, через который происходит авторизация на сервере мониторинга.

Для получения учетных данных системной учетной записи для доступа к веб-интерфейсу **Zabbix** необходимо выполнить на сервере мониторинга:

.. code-block::

  aldpro-salt-call pillar.get aldpro_deploy_data:config:monitoring_credentials:monitoring_dc01,

где:

  - dc01 короткое имя КД.

Далее необходимо преобразовать пароль:

.. code-block::

  aldpro-salt-call aldpro_subsystems.password_decrypt password_enc='<PASSWORD>' private_key_file=/etc/ssl/certs/zabbix_vault.key

1. Перейти в **Configuration → Templates → Подсистема "Службa каталогов" → Items** и создать новый **Item** (Create Item)

.. figure:: images/image_1.png
   :name: image_1.png

   Создание нового Item

Заполнить следующие данные:

.. list-table:: 
   :widths: 25 25 25 25 
   :header-rows: 1
   
   * - Name
     - Type
     - Key
     - Type of information
   * - getobjects
     - Zabbix agent (active)
     - getobjects
     - Text

.. figure:: images/image_2.png
   :name: image_2.png

   Items

2. Создать связанные элементы данных. Для этого перейти в **Configuration → Templates → Подсистема "Службa каталогов" → Items → Create Item**

Заполнить следующие данные:

.. list-table:: 
   :widths: 30 70
   :header-rows: 1
   :class: longtable

   * - **Вкладка Item**
     - 
   * - Name
     - getobjects.users
   * - Type
     - Dependent item
   * - Key
     - getobjects.users
   * - Master item
     - Подсистема «Служба каталогов»: getobjects
   * - **Вкладка Preprocessing**
     - 
   * - Name
     - JSONPath
   * - Parameters
     - $.users
   * - Type of information
     - Numeric (unsigned)

.. figure:: images/image_3.png
   :name: image_3.png

   Вкладка Item

.. figure:: images/image_4.png
   :name: image_4.png

   Вкладка Preprocessing

Нажать кнопку [**Add**]

Данный пример показывает создание связанных элементов данных для типа объектов ``users``. Для остальных типов элементы данных создаются аналогичным образом.

Перечень типов объектов:

- ``total``;
- ``users``;
- ``computers``;
- ``services``;
- ``usergroups``;
- ``hostgroups``;
- ``hbacrules``;
- ``sudorules``;
- ``dnszones``;
- ``certificates``;
- ``replication_conflicts``.

3. Проверить корректность настроек:

Проверить получение и обработку данных можно на странице Latest data. Для этого установить фильтр ``getobjects`` по полю Name. Нажать кнопку [**Apply**] (применить).

.. figure:: images/image_5.png
   :name: image_5.png

   Вкладка Latest data

Действия в терминале
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Разрешаем серверу ``zabbix`` запуск скриптов на удаленной машине без ввода пароля sudo. Необходимо внести изменения в файл ``/etc/sudoers.d/zabbix``. Привести файл к виду:

.. code-block::

    zabbix ALL = (ALL) NOPASSWD: /usr/bin/nmap -O *, /etc/zabbix/scripts/getobjects.py

Действия выполняемые в web-портал Grafana
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. note:: 

  Для перехода на web-портал ``grafana`` необходимо перейти по адресу https://mon.test.lan:3000/aldpro/dashboards,

  где:
    
  - mon - идентификатор сервера мониторинга;
  - test.lan - имя домена;
  - :3000 - порт, на котором работает ``grafana``.

  Для получения пароля системной учетной записи ``admin`` для доступа к веб-интерфейсу **Grafana** необходимо выполнить на сервере мониторинга:

  .. code-block::

    aldpro-salt-call pillar.get aldpro_deploy_data:passwords:grafana:password

  Далее необходимо преобразовать пароль:

  .. code-block::

    aldpro-salt-call aldpro_subsystems.password_decrypt password_enc='<PASSWORD>' private_key_file=/etc/ssl/certs/zabbix_vault.key

Вариант 1. Панели с последними значениями

1. Перейти на страницу Dashboards. **Home → Dashboards → New → New Dashboard**

.. figure:: images/image_6.png
   :name: image_6.png

   Страница Dashboards

2. Создать визуализацию. Нажать на кнопку [**+ Add visualization**]

.. figure:: images/image_7.png
   :name: image_7.png

   Страница New dashboards

3. Выбрать как источник данных Zabbix

.. figure:: images/image_8.png
   :name: image_8.png

   Выбор источника данных Zabbix

4. Заполнить настройки панели визуализации

.. list-table:: 
   :widths: 40 60
   :header-rows: 1
   :class: longtable

   * - Group
     - ALD Pro discovery
   * - Host
     - /.*/ 
   * - Item
     - getobjects.users
   * - **Visualisations > Stat**
     - 
   * - **Suggestions > Stat colored background**
     - 
   * - **Panel options**
     - 
   * - Title
     - Users
   * - **Value options**
     - 
   * - Show
     - Calculate
   * - Calculation
     - Last
   * - **Stat styles**
     - 
   * - Text mode
     - Value или Value and Name
   * - Color mode
     - Background Gradient
   * - **Apply**
     -

.. figure:: images/image_9.png
   :name: image_9.png

   Настройки панели визуализации

.. figure:: images/image_10.png
   :name: image_10.png

   Настройки панели визуализации

.. figure:: images/image_11.png
   :name: image_11.png

   Настройки панели визуализации

.. figure:: images/image_12.png
   :name: image_12.png

   Настройки панели визуализации

5. Повторить создание блоков визуализации для остальных типов элементов:

- ``total``;
- ``users``;
- ``computers``;
- ``services``;
- ``usergroups``;
- ``hostgroups``;
- ``hbacrules``;
- ``sudorules``;
- ``dnszones``;
- ``certificates``;
- ``replication_conflicts``.

Вариант 2. Столбчатая диаграмма

1. Перейти на страницу Dashboards. **Home → Dashboards → New → New Dashboard**

2. Создать визуализацию. Нажать на кнопку [**+ Add visualization**]

3. Заполнить настройки панели визуализации

.. list-table:: 
   :widths: 40 60
   :header-rows: 1
   :class: longtable

   * - Group
     - ALD Pro discovery
   * - Host
     - /.*/
   * - Item
     - getobjects.users
   * - **Visualisations > Time series**
     - 
   * - **Panel options**
     - 
   * - Title
     - Users
   * - **Apply**
     -

.. figure:: images/image_13.png
   :name: image_13.png

   Настройки панели визуализации

.. figure:: images/image_14.png
   :name: image_14.png

   Настройки панели визуализации

4. Повторить создание панелей визуализации для остальных типов элементов
   
Расположение и размер панелей настраиваются в соответствии с требованиями. После создания всех визуализаций дашборд сохраняется.

